package io;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JAVA IO  标准的输入与输出
 * JAVA IO将读和写按照方向划分为:
 * 输入:用于读取
 * 输出:用于写出
 * 区分方向的参照点是程序，从外界获取信息到程序中的方向是输入，反之是输出。
 * 
 * JAVA IO以标准化的方式对外界设备进行读写操作。使得我们读写外界设备的方式
 * 基本是统一的。
 * 
 * 输入流:java.io.InputStream,它是所有字节输入流的超类，定义了所有字节输入
 *       流都必须具备的读取数据的方法。
 * 输出流:java.io.OutputStream,所有字节输出流的超类，定义了写出操作。
 * 
 * 流的读写形式是顺序读写模式，即:读写数据只能顺序向后进行，是不能回退的。
 * 
 * 流除了按照读写方向分类外，还有一种分类就是:节点流与处理流
 * 节点流:数据源明确，是真实连接程序与另一端的"管道"，负责实际读写数据的流
 *        读写一定是建立在节点流的基础上进行的。它在行业里也称为:低级流
 * 处理流:不能独立存在，必须连接在其他流上，目的是当数据流经当前流时，可以对
 *        数据进行加工处理，简化我们的操作，行业里也称为:高级流
 * 
 * 
 * 
 * 文件流
 * java.io.FileInputStream和FileOutputStream
 * 文件流是一对低级流，用于读写文件的流。功能上与RandomAccessFile一致，
 * 但是文件流是基于JAVA标准的IO，读写是分开的，并且流的读写是顺序读写，
 * 只能顺序向后进行读或写操作，是不能回退的。但是RAF是基于指针的随机读写
 * 形式，可以调整指针位置对文件任意位置读写。       
 *        
 * @author 83123
 *
 */
public class FOSDemo {
	public static void main(String[] args) throws IOException {		
//		File file = new File("./fos.txt");
//		FileOutputStream fos = new FileOutputStream(file);
		/*
		 * 文件流的两种创建方式:
		 * 1:覆盖写模式，对应的构造方法:
		 * FileOutputStream(String path)
		 * FileOutputStream(File file)
		 * 覆盖模式:创建文件流时，如果指定的文件已经存在，则会将该文件原数据
		 * 全部清除，然后再开始使用当前流写入新数据。
		 * 
		 * 2:追加写模式，对应的构造方法:
		 * FileOutputStream(String path,boolean append)
		 * FileOutputStream(File file,boolean append)
		 * 追加模式:当第二个参数为true，创建文件流时，如果指定的文件已经存在，
		 * 则通过当前流写入的内容都会被顺序追加到文件末尾。
		 */
//		FileOutputStream fos = new FileOutputStream("./fos.txt");
		FileOutputStream fos = new FileOutputStream("./fos.txt",true);
		
//		String line = "摩擦摩擦~在光滑的马路上摩擦~";
//		byte[] data = line.getBytes("UTF-8");
//		fos.write(data);
//		
//		line = "我的滑板鞋，时尚时尚最时尚~";
//		data = line.getBytes("UTF-8");
//		fos.write(data);
		
		
		String line = "嘿嘿";
		byte[] data = line.getBytes("UTF-8");
		fos.write(data);
		
		
		System.out.println("写出完毕!");
		fos.close();
	}
}










